Advances in technology have resulted in smaller and more powerful computing devices. For example, there currently exist a variety of portable personal computing devices, including wireless computing devices, such as portable wireless telephones, personal digital assistants (PDAs), tablet computers, and paging devices that are small, lightweight, and easily carried by users. Many such computing devices include other devices that are incorporated therein. For example, a wireless telephone can also include a digital still camera, a digital video camera, a digital recorder, and an audio file player. Also, such computing devices can process executable instructions, including software applications, such as a web browser application that can be used to access the Internet and multimedia applications that utilize a still or video camera and provide multimedia playback functionality.
Computing devices, such as mobile phones, may include multiple processors. For example, a mobile phone may include a central processing unit (CPU) (sometimes referred to as an application processor) and a digital signal processor (DSP). Each processor may be better suited than the other processor(s) to perform certain computation tasks. For example, the CPU, which may act as the primary processor and may execute the mobile phone operating system, may be more efficient in executing “control code.” such as web browser and user interface code. On the other hand, the DSP may be more efficient than the CPU when executing signal processing and other math-intensive functions. The CPU and the DSP may have distinct instruction set architectures. Thus, applications designed to run on the CPU may be incompatible with the DSP, and vice versa.
In certain situations, it may be advantageous to execute multiple operating systems at a single computing device. In computing devices that execute multiple operating systems, a hypervisor (also known as a virtual machine monitor) may be used to provide abstractions of available hardware resources to the operating systems. Thus, the hypervisor may act as an operating system for the multiple operating systems. However, it may be difficult to design a hypervisor that can be concurrently executed across sets of processors that have different instruction set architectures.